package com.example.OnlineStorage.Dao;

import com.example.OnlineStorage.pojo.entity.FileSha256;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 文件SHA256数据访问接口。
 * 该接口定义了对文件SHA256信息的数据库操作，包括插入、删除和查询。
 */
@Mapper
@Repository
public interface FileSHA256Dao {
    /**
     * 插入文件SHA256信息。
     *
     * @param FileSha256 文件对象。
     * @return 返回插入操作的影响行数。
     */
    Integer insert(FileSha256 FileSha256);
    
    /**
     * 根据ID删除文件SHA256信息。
     *
     * @param id 要删除的文件SHA256信息的ID。
     * @return 返回删除操作的影响行数。
     */
    Integer delete(Long id);
    
    /**
     * 根据SHA256哈希值查询文件SHA256信息。
     *
     * @param SHA_256 文件的SHA256哈希值。
     * @return 返回匹配的文件SHA256信息对象，如果不存在，则返回null。
     */
    FileSha256 select(String SHA_256);
    
    /**
     * 添加文件SHA256的计数
     * @param SHA_256 要计数的文件
     * @return 返回计数操作的影响行数
     */
    Long addCount(String SHA_256);
    
    /**
     * 减少文件SHA256的计数
     * @param SHA_256 要计数的文件
     * @return 返回计数操作的影响行数
     */
    Long subCount(String SHA_256);
    
    /**
     * 添加多个文件SHA256的计数
     * @param SHA_256 要计数的文件
     * @return 返回计数操作的影响行数
     */
    Long addCounts(List<String> SHA_256);
    
    /**
     * 减少多个文件SHA256的计数
     * @param SHA_256 要计数的文件
     * @return 返回计数操作的影响行数
     */
    Long subCounts(List<String> SHA_256);
}

